package modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.joda.time.LocalDate;
import org.uqbar.commons.utils.Observable;

@Observable
public class Planificacion implements Comparable<Planificacion>,Serializable {

	private static final long serialVersionUID = 1L;
	private LocalDate fecha;
	private List<Asignacion> asignaciones;
		
	public Planificacion(LocalDate fecha) {
		super();
		this.fecha = fecha;
		this.asignaciones = new ArrayList<Asignacion>();
	}

	public LocalDate getFecha() {
		return fecha;
	}

	public List<Asignacion> getAsignaciones() {
		return asignaciones;
	}

	public void agregarAsignacion(Asignacion mockAsignacion) {
		
		this.asignaciones.add(mockAsignacion);
		
	}

	public void quitarAsignacion(Asignacion mockAsignacion) {
		this.asignaciones.remove(mockAsignacion);
	}

	@Override
	public int compareTo(Planificacion plani) {
		return fecha.compareTo(plani.getFecha());
	}

	public String getEstado(){
		boolean estaAsignada=!asignaciones.isEmpty();
		for(Asignacion asignacion:asignaciones){
			estaAsignada=estaAsignada&&
					asignacion.getEmpleadoAsignado()!=null;
		}
		if(estaAsignada){
			return "Planificada";
		}else{
			return "No planificada";
		}
	}

	public boolean estaAsignado(Empleado e) {
		for(Asignacion as : this.asignaciones){
			if(as.getEmpleadoAsignado().equals(e)){
				return true;
			}
		}
		
		return false;
	}
	
}
